package com.bdf.ipharma.model;

import java.text.SimpleDateFormat;
import java.util.List;

import javax.swing.table.AbstractTableModel;

import org.springframework.context.ApplicationContext;

import com.bdf.ipharma.ApplicationContextProvider;
import com.bdf.ipharma.service.ProductoService;

public class LoteModel extends AbstractTableModel {

	private static final long serialVersionUID = 1L;
	
	List<Lote> listLotes;	

	//Columnas del POPUP (
	private static final int DESCRIPTION_COLUMN = 0;
	private static final int VENCIMIENTO_COLUMN = 1;
	private static final int LOTE_ID_COLUMN = 2;
	
	
	public LoteModel(Lote loteDescripcionSearch) {
		ApplicationContext applicationContext = ApplicationContextProvider.getInstance().getApplicationContext();
		ProductoService productoService = (ProductoService) applicationContext.getBean("productoService");
		
		List<Lote> listLotes = productoService.getListLotes(loteDescripcionSearch);
		
		this.setListProductos(productoService.getListLotes(loteDescripcionSearch));
		
	}

	public List<Lote> getListLote() {
		return listLotes;
	}
	public void setListProductos(List<Lote> listLotes) {
		this.listLotes = listLotes;
	}

	//metodos del AbstractTableModel
	
	public int getRowCount() {		
		return this.getListLote().size();
	}

	public int getColumnCount() {
		return 2;
	}

	public Object getValueAt(int rowIndex, int columnIndex) {
		Lote lote = this.getListLote().get(rowIndex);
		    switch (columnIndex) {
		        case 0:
		            return lote.getNroLote();
		        case 1:
		            return new SimpleDateFormat("dd/MM/yyyy").format(lote.getFechaVencimiento());
		        case 2:
		        	return lote.getId();
		    }
		
		return null;		
	}
	
	
	public Class getColumnClass(int columnIndex) {
		switch (columnIndex) {
		case DESCRIPTION_COLUMN: return String.class;
		case VENCIMIENTO_COLUMN: return String.class;
		case LOTE_ID_COLUMN: return String.class;
		default: return null;
		}
		}

	public String getColumnName(int columnIndex) {
		switch (columnIndex) {
		case DESCRIPTION_COLUMN: return "Lote";
		case VENCIMIENTO_COLUMN: return "Vencimiento";			
		default: return null;
		}
		}

	
}
